package com.hsp.myapplication

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.webkit.*
import com.hsp.myapplication.R
import android.widget.Toast
import androidx.appcompat.app.AlertDialog
import kotlinx.android.synthetic.main.activity_main.*

/**
 * @author 花生皮编程
 */
class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    
        webview.loadUrl("file:///android_asset/web.html")
        val mWebSettings = webview.settings

        //启用JavaScript。
        mWebSettings.javaScriptEnabled = true
        mWebSettings.useWideViewPort = true
        mWebSettings.javaScriptCanOpenWindowsAutomatically = true
        webview.webChromeClient = object : WebChromeClient() {
            // 拦截JavaScript的Alert弹窗。
            override fun onJsAlert(
                view: WebView,
                url: String,
                message: String,
                result: JsResult
            ): Boolean {
                Toast.makeText(applicationContext, "onJsAlert:$message,$result", Toast.LENGTH_SHORT)
                    .show()
                result.confirm()

                //true，拦截JavaScript的弹窗。如果拦截了，不会出现弹窗。
                //false，不拦截JavaScript的弹窗，由WebView自行决定弹窗。
                return true
            }

            // 拦截JavaScript的Confirm弹窗。
            override fun onJsConfirm(
                view: WebView,
                url: String,
                message: String,
                result: JsResult
            ): Boolean {
                AlertDialog.Builder(this@MainActivity)
                    .setTitle("Android拦截JavaScript的Confirm弹窗")
                    .setMessage("$message , 确定吗？")
                    .setPositiveButton("确定访问") { _, _ -> result.confirm() }
                    .setNegativeButton("取消访问") { _, _ -> result.cancel() }
                    .setCancelable(false).show()

                //true，拦截JavaScript的弹窗。如果拦截了，不会出现弹窗。
                //false，不拦截JavaScript的弹窗，由WebView自行决定弹窗。
                return true
            }

            override fun onJsPrompt(
                view: WebView,
                url: String,
                message: String,
                defaultValue: String,
                result: JsPromptResult
            ): Boolean {
                println(result)
                result.confirm()

                //true，拦截JavaScript的弹窗。如果拦截了，不会出现弹窗。
                //false，不拦截JavaScript的弹窗，由WebView自行决定弹窗。
                return true
            }
        }
    }
}